package com.xugui.learn.pay.pojo.request;

import com.xugui.learn.pay.pojo.enums.PayChannel;
import com.xugui.learn.pay.pojo.enums.TradeType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 统一支付请求参数
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class PayRequest extends BaseRequest implements Serializable {

    /**
     * 支付渠道
     */
    private PayChannel payChannel;

    /**
     * 交易类型
     */
    private TradeType tradeType;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 订单金额（单位：分）
     */
    private BigDecimal amount;

    /**
     * 订单描述
     */
    private String description;

    /**
     * 用户 IP
     */
    private String clientIp;

    /**
     * 过期时间
     */
    private LocalDateTime expireTime;

    /**
     * 附加数据
     */
    private String attach;

    /**
     * 通知地址
     */
    private String notifyUrl;

    /**
     * 用户标识
     */
    private String openId;

    /**
     * 场景类型：Wap、iOS、Android
     */
    private String h5Type;

}
